Theoretical network.

Contents.

Introduction.

To systematize the study of the topological properties of the network and how they affect the cell-fate commitment process, we perform a simple theoretical study of the toggle switch network's robustness to cell fate commitment under the effect of the addition of dimensions. Initially---image below---, this network is composed of two nodes (main nodes) represented in the network by NANOG and GATA6, for example, including their mutual repression.

toggle%20switch%20%281%29.png

To these, we connected another set of nodes (secondary nodes) that, in turn, do not repress each other, nor do they self-activate. Furthermore, secondary nodes are connected to only one of the main nodes, so we will call each loop that includes a main node and its secondary node a 'branch'. This division into main and secondary nodes is in accordance with the finding that a few, key genes (here, the main nodes) in a GRN may be perturbed in such a way that the cell fate commitment is altered, while perturbations on other genes (here, the secondary nodes) do not alter the cell fate.

We aim to explore the impact of the dimensionality of the system on the robustness under perturbations, and how this is articulated through complex networks of secondary genes. We explored two simple case scenarios. First, adding the secondary nodes in parallel to each other---i.e., each of these is connected to one of the main nodes, but not to each other:

toggle%20parallel.png

Second, adding the secondary nodes in series to each other---i.e., each node is connected to the next secondary node:

toggle%20series.png

These systems are bistable for a certain range of parameters.

We start with an initial condition for the nodes on one branch higher than the other, to make sure the system commits to one of the two attractors. We let the system evolve to a stationary state. Once this state is reached, one of the nodes expressing high concentration (active)---either a main node or a secondary node---is perturbed by changing its self-degradation constant $k$ to a value defined here as $f_k$, during a time $t_{perturb}$. This would correspond, experimentally, to an increase in degradation through the incorporation of an external agent. This way, we perturb the landscape which potentially may change the attractor stability landscape, so that it could switch to the other possible attractor state. After the time of perturbation $t_{perturb}$, we return $f_k$ to its original value $k$ and let the system evolve again until relaxation.

Imports.

Parameters.

We change here the value of the repression parameter $b$ to guarantee bistability of the toggle switch. All other parameters remain unchanged with respect to all previous notebooks.

Functions.

Sparse matrices.

We need two different sparse matrices for an arbitrary number of total nodes: one for the parallel network, and another one for the series network. Besides, each of these may include a self-loop on the main nodes, or not.

We always have at least two nodes: the main ones, 1 and 2. When adding secondary nodes, those connected to 1 will be odd-numbered (i.e., 3,5,7,...), while those connected to 2 will be even-numbered (i.e., 2,4,6,...).

If the total number of nodes is odd, one branch will have one more secondary node than the other. E.g., if num_nod=5, nodes 1,3, and 5 will form a branch, while nodes 2 and 4 will form the other branch.

Systems of ODEs.

The systems of ODEs that describe each of the 4 scenarios are given here: parallel or series network, each for the case of no pertrubation on $k$, and of perturbation of $k$ to a value $f_k$.

As input paramters p, these functions need a sparse matrix (one from subsection above), the number of secondary nodes on a single branch nnodes, the parameters of the ODEs (a,b,n,S,k), and the parameters for perturbation f_k and node_perturb (e.g., 1 or 2 to perturb a main node, or larger numbers for perturbing a secondary node). More than one node may be perturbed.

Iteratively change t_perturb, k, and the number of nodes.

change_t solves the system of equations given by the sparse matrix mswitch_t and changing the time of perturbation: first we solve the unperturbed system, then use the solution as the starting point of a new simulation where we perturb a node, and finally come back to the unperturbed system. Here we repeat this for different t_perturbs, but we could also place this function within a loop of N's and k's to change these as well (in fact, we do this in the get_solsfunction).

Solve the system of equations of change_t where we change the time of perturbation, but also changing $k$ and the number of nodes.

Arguments:

Plotting

This function takes as input the list of lists of solutions for varying $N$, $k$ and $t_{perturb}$, and returns a list of matrices with components true or false, depending on whether or not there has been an inversion of the steady state after perturbing the system.

To plot the matrices we get from get_mat_for_plot:

Change k, t_perturb and N: main nodes

Parallel

Self loop.

No self loop.

Series

Self loop.

No self loop.

Heatmap: main

We show the results of our simulations:

Change k, t_perturb and N: secondary node

Parallel

Self loop.

No self loop.

Series

Self loop.

No self loop.

Heatmap: secondary

We show the results of our simulations: